/**
* All Rights Reserved , Copyright (C) 2020 , 青岛鼎信通讯股份有限公司
*
* IMeetRoomApplyService
* 会议室预订申请
*
* 修改纪录
* 2020-10-26 版本：1.0 donghang 创建。
* @version 版本：1.0
* @author 作者：donghang
* 创建日期：2020-10-26
*/

package com.topscomm.meet.service;

import java.io.IOException;
import java.util.Date;
import java.util.List;
import java.util.Map;

import com.tencentcloudapi.wemeet.common.exception.WemeetSdkException;
import com.topscomm.meet.IMeetService;
import com.topscomm.meet.dao.IMeetRoomApplyDao;
import com.topscomm.meet.pojo.MeetRoomApplyEntity;
import com.topscomm.tap.common.SessionUserBean;

public interface IMeetRoomApplyService extends IMeetService<MeetRoomApplyEntity, IMeetRoomApplyDao> {
	// 查询会议室的预约记录
	public List<Map<String, Object>> queryRecentlyIndependApplyList(Map<String, Object> paraMap);

	// 会议室申请
	public void apply(String roomTypem,MeetRoomApplyEntity entity, SessionUserBean sessionUserBean);

	// 会议室取消
	public void cancel(String sourceType, String sourceId, SessionUserBean sessionUserBean);

    void setMeetRoomData(Map<String, Object> dataMap);

    void afterApplySuccessfullyFlow(MeetRoomApplyEntity meetRoomApplyEntity);

    boolean checkTimeConflict(Map<String, Object> dataMap);
	/**
	 * @description:
	 * @author xinfushuo
	 * @param
	 * @throws
	 * @return
	 * @date 2022/6/7
	 * @modify
	 */

	boolean checkTimeCollison(Date begin, Date end, String meetRoomId);


	void remindFirstNodeApprovalUser(MeetRoomApplyEntity meetRoomApplyEntity);

	void updateMeetHistoryInfo(MeetRoomApplyEntity meetRoomApplyEntity);

	void deleteMeetRoomApply(MeetRoomApplyEntity meetRoomApplyEntity);

    /**
      * 判断冲突并创建腾讯会议，返回主持人密钥及会议号
      * @author xinfushuo
      * @param entity MeetRoomApply
      * @date 2023/3/31
      * @modify
      */
    void createTencentMeet(MeetRoomApplyEntity entity) throws WemeetSdkException , IOException;

    /**
     * @description: 会议发布删除无用审批
     * @param outSelect
     * @return void
     * @author: wangxinhua
     * @date: 2023/4/4 16:32
     * @modify:
     */
	void deleteUselessMeetRoomApply(Map<String, Object> outSelect);

    /**
     * 根据Roomid 获取腾讯会议账号id
     * @param
     * @author xinfushuo
     * @date 2023/4/1
     * @modify
     */
    String getUserid(String meetRoomid);
}
